class CLanguage(object):
    """description of class"""
    
    # 下面定义了2个类变量
    # 直接使用类名来访问,也可以使用实例对象来访问
    # 类变量一般用于定义常量
    # 类变量一般使用大写字母命名
    # 类变量是所有实例对象共有的。
    name = "C语言中文网"
    add = "http://c.biancheng.net"
    count = 0

    def __init__(self,name,add):
        #下面定义 2 个实例变量
        self.name = name
        self.add = add
        print(name,"网址为：",add)

    # 下面定义了一个say实例方法
    def say(self, content):
        print(content)


    # 下面定义了一个类方法，使用@classmethod修饰，第一个参数是类对象，一般命名为cls
    # 使用类名来访问，也可以使用实例对象来访问
    @classmethod
    def say2(cls,content):
        print(cls.name,content)


#    静态方法,使用@staticmethod修饰，不需要传入参数
#    使用类名来访问，也可以使用实例对象来访问
#    静态方法，一般用来封装一些工具方法
    @staticmethod
    def say3(content):
        print(content)

    @classmethod
    def method_count(cls):
        cls.count += 1
        print(f"类方法调用次数：{cls.count}")



if __name__ == "__main__":
    # 创建一个实例对象
    c = CLanguage("菜鸟教程", "http://c.biancheng.net")
    # 访问实例变量
    print(c.name, c.add)
    # 访问类变量
    print(CLanguage.name, CLanguage.add)
    # 访问实例方法
    c.say("菜鸟教程")
    # 访问类方法
    CLanguage.say2("菜鸟教程")

    # 访问静态方法
    CLanguage.say3("菜鸟教程22")
    c.say3("菜鸟教程22")

    CLanguage.method_count()
    CLanguage.method_count()
    print(CLanguage.count)